From 3f56389f55ef116f8cea17c15c684798fb942290 Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Fri, 27 Dec 2024 19:21:43 +0000 Subject: feat: Add REST APIs for manipulating highlights. Fixes #620 --- .../app/api/v1/highlights/[highlightId]/route.ts | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 apps/web/app/api/v1/highlights/[highlightId]/route.ts (limited to 'apps/web/app/api/v1/highlights/[highlightId]') diff --git a/apps/web/app/api/v1/highlights/[highlightId]/route.ts b/apps/web/app/api/v1/highlights/[highlightId]/route.ts new file mode 100644 index 00000000..aa92e7ce --- /dev/null +++ b/apps/web/app/api/v1/highlights/[highlightId]/route.ts @@ -0,0 +1,50 @@ +import { NextRequest } from "next/server"; +import { buildHandler } from "@/app/api/v1/utils/handler"; + +import { zUpdateHighlightSchema } from "@hoarder/shared/types/highlights"; + +export const dynamic = "force-dynamic"; + +export const GET = ( + req: NextRequest, + { params }: { params: { highlightId: string } }, +) => + buildHandler({ + req, + handler: async ({ api }) => { + const highlight = await api.highlights.get({ + highlightId: params.highlightId, + }); + return { status: 200, resp: highlight }; + }, + }); + +export const PATCH = ( + req: NextRequest, + { params }: { params: { highlightId: string } }, +) => + buildHandler({ + req, + bodySchema: zUpdateHighlightSchema.omit({ highlightId: true }), + handler: async ({ api, body }) => { + const highlight = await api.highlights.update({ + highlightId: params.highlightId, + ...body!, + }); + return { status: 200, resp: highlight }; + }, + }); + +export const DELETE = ( + req: NextRequest, + { params }: { params: { highlightId: string } }, +) => + buildHandler({ + req, + handler: async ({ api }) => { + const highlight = await api.highlights.delete({ + highlightId: params.highlightId, + }); + return { status: 200, resp: highlight }; + }, + }); -- cgit v1.2.3-70-g09d2